 // 登录路由的业务逻辑
const express = require("express");
const router = express.Router();
const userDB = require("../../database/userinfo.js");   //logininfo表的操作
const { route } = require("./rule.js");


router.post("/", async (req,res)=>{     //async处理异步操作
  // console.log(req.body);
  // 用户名和密码字符校验
  let {user,password} = req.body;
  if(/^[\u4e00-\u9fa5_a-zA-Z0-9]+$/.test(user) && /^[a-zA-Z]\w{5,17}$/.test(password)){
        // 判断数据库中的用户名是否已经被注册
        let userDoc = await userDB.findOne({user});
        //如果数据库中的用户名不存在
        if(userDoc == null){
          res.send({
            code:1,
            message:"当前用户未注册,请先注册"  //提示用户未注册,需要注册
          });
          return;
        }

        // 判断数据库密码是否与登录界面输入的密码一致
        if(userDoc.password === password){

          let userInfo = {
            user:userDoc.user,
            _id:userDoc._id,
            photo:userDoc.photo,
            admin:userDoc.admin,
          };
          //将用户数据存到session中,注意:密码不要存
          req.session.userInfo = userInfo;

          //如果一致,密码正确
          res.send({
            code:0,  //0代表正确
            message:"恭喜您登陆成功",
            data:userInfo, //给前端用户数据
          });
         
        }else{
          //如果密码不一致,密码错误
          res.send({
            code:3,
            message:"密码输入错误"
          });
          return;
        }


  }else{
    res.send({
      code:2, //2代表数据格式不规范
      message:"您的数据格式不规范"
    });
  }
});

// 检测是否登录
router.post("/isCheck", (req,res)=>{
  let data = req.session.userInfo;
  if(data){
    // 检测已经登录
    res.send({
      code:0,
      msg:"已经登录",
      data:req.session.userInfo //要给前端数据，前端才能有头像的路径数据  没有数据，vuex里也不会有数据
    })
  }else{
    //未登录
    res.send({
      code:1,
      msg:"未登录",
      data:{}
    })
  }
  console.log(req.session);
});


// 退出登录
router.post("/out",(req,res)=>{
  req.session.destroy();  // 销毁当前的session
  res.send({
    code:0,
    message:"已退出登录，请重新登录"
  })
})


// 导出
module.exports = router;